home *** CD-ROM | disk | FTP | other *** search
/ Shareware Super Platinum 8 / Shareware Super Platinum 8.iso / mac / PROGTOOL / FLI106C.ZIP;1 / MASKCH.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1992-03-12  |  3.0 KB  |  158 lines

  1. //
  2. // The Fusion Library Interface for DOS
  3. // Version 1.06c
  4. // Copyright (C) 1990, 1991, 1992
  5. // Software Dimensions
  6. //
  7. // CharMask
  8. //
  9.  
  10. #include "fli.h"
  11.  
  12. #ifdef __BCPLUSPLUS__
  13. #pragma hdrstop
  14. #endif
  15.  
  16. #include <ctype.h>
  17. #include <string.h>
  18.  
  19. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  20. //
  21. // MaskSet define
  22. //
  23. // Defines the characters available in the masking set
  24. //
  25. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  26.  
  27. #define MaskSet "xXaALlUu0123456789#"
  28.  
  29. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  30. //
  31. // MaskCheck()
  32. //
  33. // Return: 0 If key doesn't conform to mask
  34. //         1 If key does conform to mask
  35. //
  36. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  37.  
  38. int CharMask::MaskCheck(int MaskItem,int &ItemToCheck,int JustChecking)
  39. {
  40.   if ((MaskItem=='X' || MaskItem=='A') && !JustChecking)
  41.     ItemToCheck-=(islower(ItemToCheck))?32:0;
  42.  
  43.   if ((MaskItem=='L' || MaskItem=='l') && !JustChecking)
  44.     ItemToCheck+=(isupper(ItemToCheck))?32:0;
  45.  
  46.   switch(MaskItem)
  47.   {
  48.     case 'X':
  49.     case 'l':
  50.     case 'u':
  51.     case 'x':
  52.       if (isascii(ItemToCheck) && ItemToCheck>=' ')
  53.         return 1;
  54.       break;
  55.  
  56.     case 'A':
  57.     case 'L':
  58.     case 'U':
  59.     case 'a':
  60.       if (isalpha(ItemToCheck) || ItemToCheck==' ')
  61.         return 1;
  62.       break;
  63.  
  64.     case '#':
  65.       if (isdigit(ItemToCheck) || ItemToCheck=='-')
  66.         return 1;
  67.       break;
  68.  
  69.     case '0':
  70.     case '1':
  71.     case '2':
  72.     case '3':
  73.     case '4':
  74.     case '5':
  75.     case '6':
  76.     case '7':
  77.     case '8':
  78.     case '9':
  79.       if (ItemToCheck>='0' && ItemToCheck<=MaskItem)
  80.         return 1;
  81.       break;
  82.   }
  83.  
  84.   return 0;
  85. }
  86.  
  87. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  88. //
  89. // MaskShow()
  90. //
  91. // Handles displaying text in mask
  92. //
  93. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  94.  
  95. void CharMask::MaskShow(char *Mask,char *Value,BlazeClass &Blaze,
  96.   int Start,int Width)
  97. {
  98.   int Locate=0, Size=0;
  99.  
  100.   while (*Mask)
  101.   {
  102.     if (!strchr(MaskSet,*Mask))
  103.     {
  104.       if (!Width || (Width && Locate>=Start))
  105.       {
  106.         Blaze << *Mask++;
  107.         Size++;
  108.       }
  109.       else
  110.         Mask++;
  111.     }
  112.     else
  113.     {
  114.       #pragma warn -lin
  115.       #pragma warn -lvc
  116.  
  117.       if (!*Value)
  118.       {
  119.         if (!Width || (Width && Locate>=Start))
  120.         {
  121.           Blaze << ' ';
  122.           Size++;
  123.         }
  124.       }
  125.       else if (!MaskCheck(*Mask,*Value))
  126.       {
  127.         *Value=0;
  128.         if (!Width || (Width && Locate>=Start))
  129.         {
  130.           Blaze << ' ';
  131.           Size++;
  132.         }
  133.       }
  134.       else
  135.       {
  136.         if (!Width || (Width && Locate>=Start))
  137.         {
  138.           Blaze << *(Value++);
  139.           Size++;
  140.         }
  141.         else
  142.           Value++;
  143.       }
  144.  
  145.       #pragma warn .lin
  146.       #pragma warn .lvc
  147.  
  148.       Mask++;
  149.     }
  150.  
  151.     Locate++;
  152.  
  153.     if (Width && Size==Width)
  154.       break;
  155.   }
  156. }
  157.  
  158.